home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / unixlib.lha / unix / src / amigatime.c < prev    next >
C/C++ Source or Header  |  1996-01-04  |  1KB  |  64 lines

  1. #include "amiga.h"
  2. #include "timeconvert.h"
  3. #include <sys/time.h>
  4. #include <sys/timeb.h>
  5. #include <string.h>
  6.  
  7. extern char *tzname[2];
  8. extern int daylight;
  9.  
  10. int gettimeofday(struct timeval *tp, struct timezone *tzp)
  11. {
  12.     struct timeval now;
  13.  
  14.     __chkabort();
  15.  
  16.     _gettime(&now);
  17.     if (tp)
  18.     *tp = now;
  19.  
  20.     if (tzp) {
  21.     int dst;
  22.     struct tm *local;
  23.  
  24.     local = localtime((const time_t *) &now.tv_secs);
  25.  
  26.     tzp->tz_minuteswest = -local->tm_gmtoff / 60;
  27.     /* Guess a value for tz_dsttime, based on tzname[1] */
  28.     /* These guesses are not very good. */
  29.     dst = DST_NONE;
  30.     if (!strcmp(tzname[1], "MET DST"))
  31.         dst = DST_MET;
  32.     else if (!strcmp(tzname[1], "WET DST"))
  33.         dst = DST_WET;
  34.     else if (!strcmp(tzname[1], "EET DST"))
  35.         dst = DST_EET;
  36.     else if (!strcmp(tzname[1], "EDT"))
  37.         dst = DST_USA;
  38.     else if (!strcmp(tzname[1], "CDT"))
  39.         dst = DST_USA;
  40.     else if (!strcmp(tzname[1], "MDT"))
  41.         dst = DST_USA;
  42.     else if (!strcmp(tzname[1], "PDT"))
  43.         dst = DST_USA;
  44.     else if (!strcmp(tzname[1], "AKDT"))
  45.         dst = DST_USA;
  46.     tzp->tz_dsttime = dst;
  47.     }
  48.     return 0;
  49. }
  50.  
  51. int ftime(struct timeb *ft)
  52. {
  53.     struct timeval now;
  54.     struct timezone zone;
  55.  
  56.     gettimeofday(&now, &zone);
  57.     ft->time = now.tv_sec;
  58.     ft->millitm = now.tv_usec;
  59.     ft->timezone = zone.tz_minuteswest;
  60.     ft->dstflag = daylight;
  61.  
  62.     return 0;
  63. }
  64.